# 作者: 赵若云
# 2025年02月28日02时03分29秒
# 3478783573@qq.com


# 迭代器
for i in range(10):
    print(i, end=' ')


# 把range（10）换掉变成自己的
# 迭代器----》生成器
def f(n):
    i = 0
    while i < n:
        # yield 是关键字，用来返回一个生成器
        yield i  # 让进程暂停到这个位置，并i返回
        i += 1
    return


print()
for i in f(10):
    print(i, end=' ')

print()
print(f(10))  # 地址

print('-' * 50)
myiter = f(2)
print(next(myiter))  # 0
print(next(myiter))  # 1
# print(next(myiter))  # 2，没有了，抛出StopIteration异常
print('-' * 50)

# 第二次后面都没有了，因为已经迭代完毕，不能再用了
# 可迭代对象可以多次用，生成器只能用一次
myiter = f(2)
for i in myiter:
    print(i, end=' ')
print()
print('-' * 50)
for i in myiter:
    print(i, end=' ')

